package com.cskaoyan.javase.oop3._2inner._4anonymous._2exercise;
/**
 * 不修改main方法和接口Inter的前提下
 *      补齐Outer类代码，要求在控制台输出`HelloWorld`
 * 分析:
 *      Outer.method()这个方法的返回值肯定是一个对象
 *      而且这个对象能够调用show方法,而show方法是接口中的抽象方法,说明这个对象是接口的子类对象
 *      --->
 *      Outer.method()这个方法的返回值类型是接口或者接口的子类
 *      并且method()这个方法用类名点调用,是静态方法,不需要参数
 *
 * @since 17:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test{
    public static void main(String[] args) {
        Outer.method().show();
    }
}
interface Inter {
    void show();
}
class InterImpl implements Inter{
    @Override
    public void show() {
        System.out.println("hello world!");
    }
}

class Outer {
    public static Inter method(){
        // 这里需要返回接口的子类对象
        // 1.常规做法
        // return new InterImpl();
        // 2.使用局部内部类
        /*class InterImpl implements Inter{
            @Override
            public void show() {
                System.out.println("hello world!");
            }
        }
        return new InterImpl();*/
        // 3.用匿名内部类对象
        return new Inter() {
            @Override
            public void show() {
                System.out.println("hello world!");
            }
        };
    }
}